/*
 * @Date: 2023-09-08 15:07:33
 * @LastEditTime: 2023-10-12 11:08:04
 * 介绍:
 */
import { i18n } from "@@/language";
import { defaHttp, Api } from "../index";
//@ts-ignore
const { t } = i18n.global;

/**发布新任务 */
export async function apiAddTask(
  data: ApiAddTask.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiAddTask.Data>>("/task", data, {
    mode: {
      successMessage: true,
      failMessage: true,
      loadingMessage: t("tong-bu-jiao-yi-zhong-qing-bu-yao-tui-chu"),
    },
  });
  if (res.code !== 200) return;
  return true;
}

/**发布新任务 */
export namespace ApiAddTask {
  export interface Req {
    /**
     * 本金
     */
    capital: string;
    /**
     * 佣金
     */
    commission: string;
    /**
     * 详情
     */
    details: string;
    /**
     * 图片
     */
    images: string;
    /**
     * 标题
     */
    introduction: string;
    /**
     * 期限
     */
    order_limit_time: string;
    /**
     * 交易标识
     */
    txid: string;
    /**
     * 口令
     */
    watchword?: string;
  }
  export type Data = string;
}

/**接单 */
export async function apiOrderTask(
  data: ApiOrderTask.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiOrderTask.Data>>(
    "/order_task",
    data,
    {
      mode: {
        successMessage: true,
        failMessage: true,
        loadingMessage: t("tong-bu-jiao-yi-zhong-qing-bu-yao-tui-chu"),
      },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**接单 */
export namespace ApiOrderTask {
  export interface Req {
    /**任务id */
    task_id: number;
    txid: string;
  }
  export type Data = string;
}

/**任务详情 */
export async function apiTaskDetails(
  params: ApiTaskDetails.Params,
  data: ApiTaskDetails.Req
): Promise<ApiTaskDetails.Data | undefined> {
  const res = await defaHttp.get<Api.Res<ApiTaskDetails.Data>>(
    `/task_info/${params.id}`,
    data,
    { mode: { failMessage: true } }
  );
  if (res.code !== 200) return;
  return res.data;
}

/**任务详情 */
export namespace ApiTaskDetails {
  export interface Params {
    id: number;
  }
  export interface Req {
    watchword: string | undefined;
  }
  export interface Data {
    /**
     * -，示例：0.0000
     */
    actual_number: string;
    /**
     * -，示例：-
     */
    arbitrate: Arbitrate;
    /**
     * -，示例：0
     */
    arbitration_agree_number: number;
    /**
     * -，示例：null
     */
    arbitration_duration: null;
    /**
     * -，示例：0
     */
    arbitration_refuse_number: number;
    /**
     * -，示例：null
     */
    arbitration_time: null | string;
    /**
     * -，示例：null
     */
    auto_finish_time: null | string;
    /**
     * 本金，示例：1.0000
     */
    capital: string;
    /**
     * 佣金，示例：1.0000
     */
    commission: string;
    /**
     * -，示例：2023-10-16 09:39:45
     */
    created_at: string;
    /**
     * 同意删除人数，示例：null
     */
    delete_agree_number: null;
    /**
     * 拒绝删除人数，示例：null
     */
    delete_refuse_number: null;
    /**
     * 删除审核时长：分钟，示例：null
     */
    delete_verify_duration: null;
    /**
     * -，示例：null
     */
    deleted_at: null;
    /**
     * 详情，示例：<p>看看今天天气怎么样</p>
     */
    details: string;
    /**
     * 冻结金额，示例：0.0000
     */
    frozen_amount: string;
    /**
     * 任务id，示例：37
     */
    id: number;
    /**
     * 图片地址，示例：null
     */
    images: string[];
    /**
     * 标题，示例：天气很好
     */
    introduction: string;
    /**
     * -，示例：0
     */
    is_reward: number;
    /**
     * 期限（小时），示例：48
     */
    order_limit_time: number;
    /**
     * -，示例：1
     */
    order_mode: number;
    /**
     * -，示例：1
     */
    order_person_number: number;
    /**
     * 平台服务费，示例：0.2000
     */
    platform_service_fee: string;
    /**
     * -，示例：null
     */
    remark: null;
    /**
     * -，示例：100%
     */
    reputation: string;
    /**
     * -，示例：0.0000
     */
    safe_number: string;
    /**
     * 状态：-1=已撤销，1=待接单,2=已接单，3=仲裁中，4=未完成,5,待审核，10=完成,13=确认失败，20=申请删除中，21=删除申请成功
     */
    status: number;
    /**
     * -，示例：null
     */
    tag: null;
    /**
     * 仲裁，示例：-
     */
    task_arbitrate: TaskArbitrate[];
    /**
     * 任务编号，示例：8572691478297
     */
    task_no: number;
    /**
     * -，示例：-
     */
    task_order: TaskOrder;
    /**
     * 完成/退回说明，示例：-
     */
    task_progress: TaskProgress[];
    /**
     * -，示例：1
     */
    task_type: number;
    /**
     * 交易标识，示例：0xb5e7ef11997497fbf6124e2d2f1e2c52b5997bbc18f5d95ee7f5bdc360a5109a
     */
    txid: string;
    /**
     * -，示例：2023-11-02 17:52:26
     */
    updated_at: string;
    /**
     * usdt数量，示例：2.2000
     */
    usdt_number: string;
    /**
     * -，示例：-
     */
    user: User;
    /**
     * 用户id，示例：2
     */
    user_id: number;
    /**
     * 口令，15位数字，示例：null
     */
    watchword: null;
    /**
     * xxb数量，示例：173.8674
     */
    xxb_number: string;
    /**
     * xxb价格，示例：0.0127
     */
    xxb_price: string;
  }

  /**
   * -，示例：-
   */
  export interface Arbitrate {
    /**
     * 收费比例，示例：0.01
     */
    appeal_fees: number;
    appeal_fees_2: number;
    /**
     * 是否第一次：0=否,1=是
     */
    first_time: number;
  }

  export interface TaskArbitrate {
    /**
     * -，示例：81
     */
    apply_user_id: number;
    /**
     * 1=雇主,2=接单者，示例：2
     */
    apply_user_type: number;
    /**
     * -，示例：2023-10-16 09:50:30
     */
    created_at: string;
    /**
     * -，示例：15
     */
    id: number;
    /**
     *
     * -，示例：https://wkwimages.s3.ap-northeast-1.amazonaws.com/images/cpT1V7lUxAGKdIdtwKLWvL0lGPJOOgbFFfONHNjL.png
     */
    images: string[];
    /**
     * 0未选择,1=同意判决,2=不同意，继续申诉
     */
    is_agree: number;
    /**
     * -，示例：null
     */
    number: null;
    /**
     * -，示例：0xc54d3916386e3656564fadb77d0c92bd12318cf5
     */
    order_user_address: string;
    /**
     * 接单用户id，示例：28
     */
    order_user_id: number;
    /**
     * -，示例：null
     */
    price: null;
    /**
     * 0未判定，1=给雇主，2=给雇员
     */
    result: number;
    /**
     * -，示例：-
     */
    result_images: string[];
    /**
     * -，示例：测试支持雇主
     */
    result_title: string;
    /**
     * 0=待仲裁员接单，1=已接单，2=已完成,3=驳回，4=超时未完成
     */
    status: number;
    /**
     * -，示例：37
     */
    task_id: number;
    /**
     * -，示例：天气确实很好
     */
    title: string;
    /**
     * -，示例：null
     */
    txid: null;
    /**
     * -，示例：2023-11-02 17:52:26
     */
    updated_at: string;
    /**
     * -，示例：null
     */
    usdt: null;
  }

  /**
   * -，示例：-
   */
  export interface TaskOrder {
    /**
     * -，示例：0.0000
     */
    actual_number: string;
    /**
     * -，示例：2023-10-16 09:42:38
     */
    created_at: string;
    /**
     * -，示例：0.0000
     */
    end_number: string;
    /**
     * -，示例：0.0000
     */
    end_price: string;
    /**
     * -，示例：17
     */
    id: number;
    /**
     * -，示例：null
     */
    number: null;
    /**
     * -，示例：null
     */
    price: null;
    /**
     * -，示例：empty hash
     */
    remark: string;
    /**
     * -，示例：13
     */
    status: number;
    /**
     * -，示例：37
     */
    task_id: number;
    /**
     * -，示例：null
     */
    txid: null;
    /**
     * -，示例：2023-11-09 16:42:04
     */
    updated_at: string;
    /**
     * -，示例：null
     */
    usdt: null;
    /**
     * -，示例：0xbd8ee38001516e469bbd322ad3268d80a346f0d8
     */
    user_address: string;
    /**
     * -，示例：81
     */
    user_id: number;
  }

  export interface TaskProgress {
    /**
     * -，示例：2023-10-16 09:43:12
     */
    created_at: string;
    /**
     * -，示例：23
     */
    id: number;
    /**
     * 图片，示例：null
     */
    images: null;
    /**
     * -，示例：37
     */
    task_id: number;
    /**
     * 说明，示例：天气很好
     */
    title: string;
    /**
     * 类型:1=完成,2=驳回
     */
    type: null;
    /**
     * -，示例：81
     */
    user_id: number;
    /**
     * 1=雇主，2=威客，示例：2
     */
    user_type: number;
  }

  /**
   * -，示例：-
   */
  export interface User {
    /**
     * -，示例：0x654ad9d324b010d7d52f86faec3f4866ce62de03
     */
    address: string;
    /**
     * -，示例：2
     */
    id: number;
    /**
     * -，示例：1
     */
    level: number;
  }
}

/**撤销任务 */
export async function apiRevokeTask(
  params: ApiRevokeTask.Params
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiRevokeTask.Data>>(
    `/revoke_task/${params.id}`,
    undefined,
    {
      mode: { failMessage: true, successMessage: true, loadingMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**撤销任务 */
export namespace ApiRevokeTask {
  export interface Params {
    id: number;
  }

  export type Data = string;
}

/**提交违规词 */
export async function apiAddBan(
  data: ApiAddBan.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiAddBan.Data>>(
    "/words/enter",
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**提交违规词 */
export namespace ApiAddBan {
  export interface Req {
    /**
     * 说明
     */
    explain: string;
    /**
     * 违规词
     */
    word: string;
  }
  export type Data = string;
}

/**违规词投票 */
export async function apiBanVote(
  params: ApiBanVote.Params,
  data: ApiBanVote.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiBanVote.Data>>(
    `/words/vote/${params.id}`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**违规词投票 */
export namespace ApiBanVote {
  export interface Params {
    id: number;
  }
  export interface Req {
    /**
     * 1=同意，2=不同意
     */
    type: number;
  }
  export type Data = string;
}

/**申请删除任务 */
export async function apiApplyDelTask(
  data: ApiApplyDelTask.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiApplyDelTask.Data>>(
    `/task/apply_delete`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**申请删除任务 */
export namespace ApiApplyDelTask {
  export interface Req {
    /**
     * 说明
     */
    explain: string;
    /**
     * 图片
     */
    images: string;
    /**
     * 任务id
     */
    task_id: number;
  }
  export type Data = string;
}
/**删除自己的任务 */
export async function apiDelTask(
  params: ApiDelTask.Params
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiDelTask.Data>>(
    `/task/delete/${params.id}`,
    undefined,
    {
      mode: { failMessage: true, successMessage: true, loadingMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**删除自己的任务 */
export namespace ApiDelTask {
  export interface Params {
    id: number;
  }
  export type Data = string;
}
/**给删除任务投票 */
export async function apiDelTaskVote(
  params: ApiDelTaskVote.Params,
  data: ApiDelTaskVote.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiDelTaskVote.Data>>(
    `/task/vote_delete/${params.id}`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**给删除任务投票 */
export namespace ApiDelTaskVote {
  export interface Params {
    id: number;
  }
  export interface Req {
    /**
     * 1=同意，2=不同意
     */
    type: number;
  }
  export type Data = string;
}

/**添加任务评论 */
export async function apiWkAddTaskComment(
  data: ApiWkAddTaskComment.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiWkAddTaskComment.Data>>(
    `/guestbook`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**添加任务评论 */
export namespace ApiWkAddTaskComment {
  export interface Req {
    /**
     * 留言内容
     */
    content: string;
    /**
     * 任务id
     */
    task_id: number;
  }
  export type Data = string;
}

/**申请完成任务 */
export async function apiTaskApplyFinish(
  data: ApiTaskApplyFinish.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiTaskApplyFinish.Data>>(
    `/task/submission`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**申请完成任务 */
export namespace ApiTaskApplyFinish {
  export interface Req {
    /**
     * 说明
     */
    title: string;
    /**
     * 任务编号
     */
    task_id: number;
    /**图片 */
    images: string;
  }
  export type Data = string;
}

/**申请仲裁任务 */
export async function apiTaskApplyArbitrate(
  data: ApiTaskApplyArbitrate.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiTaskApplyArbitrate.Data>>(
    `/apply_arbitration/${data.task_id}`,
    data,
    {
      mode: {
        successMessage: true,
        failMessage: true,
        loadingMessage: t("tong-bu-jiao-yi-zhong-qing-bu-yao-tui-chu"),
      },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**申请仲裁任务 */
export namespace ApiTaskApplyArbitrate {
  export interface Req {
    /**
     * 说明
     */
    title: string;
    /**
     * 任务编号
     */
    task_id: number;
    /**图片 */
    images: string;
    txid: string;
  }
  export type Data = string;
}

/**申请仲裁任务 */
export async function apiTaskArbitrateVote(
  data: ApiTaskArbitrateVote.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiTaskArbitrateVote.Data>>(
    `/participation_arbitration`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**申请仲裁任务 */
export namespace ApiTaskArbitrateVote {
  export interface Req {
    /**
     * 仲裁id
     */
    arbitrate_id: number;
    /**
     * 1=给雇主，2=给雇员
     */
    result: number;
    /**
     * 图片
     */
    result_images: string;
    /**
     * 说明
     */
    result_title: string;
    /**
     * 仲裁id
     */
    task_id: number;
  }
  export type Data = string;
}

/**完成任务 */
export async function apiTaskFinish(
  data: ApiTaskFinish.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiTaskFinish.Data>>(
    `/task/confirm`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**完成任务 */
export namespace ApiTaskFinish {
  export interface Req {
    /**
     * 任务编号
     */
    task_id: number;
  }
  export type Data = string;
}

/**同意仲裁 */
export async function apiTaskArbitrationAgree(
  data: ApiTaskArbitrationAgree.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiTaskArbitrationAgree.Data>>(
    `/agree_judgment/${data.id}`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**同意仲裁 */
export namespace ApiTaskArbitrationAgree {
  export interface Req {
    id: number;
  }
  export type Data = string;
}
/**申请保价基金 */
export async function apiApplyInsured(
  data: ApiApplyInsured.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiApplyInsured.Data>>(
    "/insured/apply",
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**申请保价基金 */
export namespace ApiApplyInsured {
  export interface Req {
    /**金额 */
    money: StrNumber;
    title: string;
    /**
     * 图片
     */
    images: string;
  }
  export type Data = string;
}

/**保价基金投票 */
export async function apiApplyInsuredVote(
  data: ApiApplyInsuredVote.Req
): Promise<true | undefined> {
  const res = await defaHttp.post<Api.Res<ApiApplyInsuredVote.Data>>(
    `/insured/vote/${data.id}`,
    data,
    {
      mode: { failMessage: true, successMessage: true },
    }
  );
  if (res.code !== 200) return;
  return true;
}

/**保价基金投票 */
export namespace ApiApplyInsuredVote {
  export interface Req {
    /**1：同意，2：不同意 */
    type: number;
    id: StrNumber;
  }
  export type Data = string;
}

/**排行榜 */
export async function apiRankingList(): Promise<
  ApiRankingList.Data | undefined
> {
  const res = await defaHttp.post<Api.Res<ApiRankingList.Data>>(
    `/rank_list`,
    undefined,
    {
      mode: { failMessage: true },
    }
  );
  if (res.code !== 200) return;
  return res.data;
}

/**排行榜 */
export namespace ApiRankingList {
  export interface Req {}
  export interface Data {
    /**
     * -，示例：-
     */
    my: My;
    /**
     * -，示例：-
     */
    rankList: RankList[];
  }

  /**
   * -，示例：-
   */
  export interface My {
    /**
     * 我的累计金额，示例：2566
     */
    money: string;
    /**
     * 我的排名，示例：1
     */
    rank: number;
  }

  export interface RankList {
    /**
     * 地址，示例：0x9938****5346
     */
    address: string;
    /**
     * 金额，示例：2566
     */
    money: string;
  }
}
/**发布任务重新付款 */
export async function apiAddtaskRePlay(
  data: ApiAddtaskRePlay.Req
): Promise<boolean | undefined> {
  const res = await defaHttp.post<Api.Res<any>>("/task/repay", data, {
    mode: {
      successMessage: true,
      failMessage: true,
      loadingMessage: t("tong-bu-jiao-yi-zhong-qing-bu-yao-tui-chu"),
    },
  });
  if (res.code !== 200) return;
  return true;
}
/**发布任务重新付款 */
export namespace ApiAddtaskRePlay {
  export interface Req {
    /**
     * 任务id
     */
    task_id: StrNumber;
    /**
     * 交易标识
     */
    txid: string;
  }
}

/**接单重新付款 */
export async function apiOrderTaskRePlay(
  data: ApiOrderTaskRePlay.Req
): Promise<boolean | undefined> {
  const res = await defaHttp.post<Api.Res<any>>("/order_task/repay", data, {
    mode: {
      successMessage: true,
      failMessage: true,
      loadingMessage: t("tong-bu-jiao-yi-zhong-qing-bu-yao-tui-chu"),
    },
  });
  if (res.code !== 200) return;
  return true;
}
/**接单重新付款 */
export namespace ApiOrderTaskRePlay {
  export interface Req {
    /**
     * 任务id
     */
    order_id: StrNumber;
    /**
     * 交易标识
     */
    txid: string;
  }
}
